package ma.cdm.rapports.datasources;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.collections.ListUtils;

import ma.cdm.compteRenduVO.PersonneVO;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

public class ParticipantDatasource implements JRDataSource {
	 private int index = -1;
	 List<PersonneVO> membres = new ArrayList<PersonneVO>();
	 List<PersonneVO> absents = new ArrayList<PersonneVO>();
	 List<PersonneVO> autres = new ArrayList<PersonneVO>();
 
	@SuppressWarnings("unchecked")
	public ParticipantDatasource(List<PersonneVO> membres,
			List<PersonneVO> absents, List<PersonneVO> internes,List<PersonneVO> externes) {
		super();
		if(membres == null)
		{
			membres = new ArrayList<PersonneVO>();
		}
		if(internes == null)
		{
			internes = new ArrayList<PersonneVO>();
		}
		if(externes == null)
		{
			externes = new ArrayList<PersonneVO>();
		}
		if(absents == null)
		{
			absents = new ArrayList<PersonneVO>();
		}
		this.membres = membres;
		this.autres =(ArrayList<PersonneVO>)ListUtils.union(internes, externes);
		this.absents = absents;
	}

	public Object getFieldValue(JRField field) throws JRException {
			 String fieldName = field.getName();
			 if ("membre".equals(fieldName)) 
			 {
				 if(membres != null && membres.size()>index)
				 {
					 PersonneVO pers = membres.get(index);
					 return pers.toString();
				 }
				 else
				 {
					 return "";
				 }
			 }
			 
			 if ("autre".equals(fieldName)) 
			 {
				 if(autres != null && autres.size()>index)
				 {
					 PersonneVO pers = autres.get(index);
					 return pers.toString();
				 }
				 else
				 {
					 return "";
				 }
			 }
			 if ("absent".equals(fieldName)) 
			 {
				 if(absents != null && absents.size()>index)
				 {
					 PersonneVO pers = absents.get(index);
					 return pers.toString();
				 }
				 else
				 {
					 return "";
				 }
			 }
		return "";
	}

	public boolean next() throws JRException {
		int maxSize = Math.max(membres.size(), Math.max((autres.size()),absents.size()));
        return ++index < maxSize;
    }

}
